home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 July: Mac OS SDK / Dev.CD Jul 00 SDK1.toast / What's New / • What was new 05⁄00 / Development Kits / Mac OS / DrawSprocket SDK / DrawSprocket Release Notes < prev    next >
Encoding:
Text File  |  2000-02-23  |  12.5 KB  |  280 lines  |  [TEXT/ttxt]

  1. DrawSprocket 1.7.3
  2. Release Notes
  3. -------------------
  4.  
  5. For a detailed list of changes from the previous version, please read the
  6. change list at the end of this document.
  7.  
  8. Please report all bugs using the bug reporter on Apple Developer Connection:
  9.  
  10. <http://developer.apple.com/bugreporter/index.html>
  11.  
  12. Release Components
  13. ------------------    
  14.   DrawSprocket Release Notes                  - this file    
  15.   DSp Debugging Tips                             - tips for debugging DSp programs
  16.     
  17.   Interfaces&Libraries                           - headers and link libraries
  18.  
  19.   DrawSprocketLib                                   - release version of the library
  20.   Debug Extensions                               - debugging version of the library
  21.     
  22.   Licensing Info Folder           - Info on how to license DrawSprocket for redistribution
  23.  
  24. WARNING: don't place both the debugging and non-debugging versions of the
  25. library in the search path or you will not be sure which version you are
  26. using.
  27.  
  28.  
  29. Dependencies
  30. ------------
  31.  
  32. DrawSprocket 1.7.3 requires Mac OS 8.1 or later.
  33.  
  34. DrawSprocket requires version 3.3 or later of the Universal Headers -- You can find them with the
  35. latest version of your development environment, Apple's develop WWW and FTP sites or the
  36. developer CD ROMs.
  37.  
  38.  
  39. Compatibility with Previous Releases
  40. ------------------------------------
  41.  
  42. DrawSprocket 1.7.3 is PowerPC-only.  It is fully compatible with all previous
  43. PowerPC apps which used DrawSprocket.
  44.  
  45.  
  46. Changes from 1.7.2 to 1.7.3
  47. ---------------------------
  48.  
  49. Bug Fixes:
  50.   -  There are cases with some VGA displays where safe timing modes can not be determined.
  51.      Because of this VGA timings over 85 Hz are ignored.  For 1024x768 displays timings over
  52.         75 Hz are ignored.  This was the only safe solution for this problem.
  53.     
  54.   -  There were some problems with the new DSpContext_Queue/Switch calls in cases where the
  55.      various contexts in question were on the same non-resolution-switching display.  This
  56.         could be a PowerBook display, or Apple 16" display, etc.  The problem would
  57.      show up such that only the last-queued context would ever be available.
  58.      These are now fixed.
  59.  
  60.   -  There was a bug in the debug asserts for DSpFindBestContext.  If you requested a page-
  61.      count of 1 DSpFindBestContext would gripe if you didn't supply a back-buffer depth even
  62.      though this parameter was ignored.  This is now fixed.
  63.  
  64. Changes:
  65.   -  The debug version now provides more asserts in the context selection routines
  66.      (DSpFindBestContext, etc).  Rather than just returning a paramErr you now get a
  67.      detailed assert message telling you exactly what was wrong with the DSpContextAttributes
  68.      structure that you passed in.
  69.  
  70.  
  71. Changes from 1.1.4 to 1.7.2
  72. ---------------------------
  73.  
  74. Bug Fixes:
  75.   -  There was a race condition for 3-page contexts which could cause a crash when
  76.                     you inactivated the context.  This has been fixed.
  77.  
  78. Changes:
  79.   -  DSpGetVersion() has now been added.  It returns a structure of type NumVersion.
  80.  
  81.   -  DSpGetCurrentContext() has been added.  Given a display ID it returns the context
  82.      which matches the state of the current display geometry.
  83.  
  84.   -  Added DSpFindBestContextOnDisplayID().  This is the same as DSpFindBestContext() but
  85.      only searches the specified display.
  86.  
  87.   -  Added two other new calls: DSpContext_Queue() and DSpContext_Switch().  After reserving
  88.      the main context for a display you can then use DSpContext_Queue() to let DrawSprocket
  89.      know that you will want to switch to other display modes.  You can then use
  90.      DSpContext_Switch() to directly switch between the two modes without having to inactivate
  91.      the parent context and reset to the default display mode first.  See the SprocketInvaders
  92.      sample code for an example of how these new calls should be used.
  93.  
  94.  
  95. Changes from 1.1.3 to 1.1.4
  96. ---------------------------
  97.  
  98. Bug Fixes:
  99.   -  Previous versions of DrawSprocket would call the Display Manager to change the display
  100.      mode even if the target mode and current mode were the same.  This would cause a
  101.      flash of gray across the screen.  This is now fixed.
  102.  
  103.   -  Previous versions of DrawSprocket would change the gamma table on some video cards,
  104.      resulting in "Custom Gamma" appearing in the Monitors and Sounds control panel.
  105.      This has been fixed.
  106.       
  107.   -  DrawSprocket now includes a ('dlgx', 128) resource so that it does not conflict with
  108.      application dialogs.
  109.  
  110.   -  If you passed in a color to DSpContext_FadeGamma with RGB values that were smaller
  111.      than the size of the table (generally 256), then DrawSprocket would fade to an incorrect
  112.      color. Additional changes were also made to support video hardware with a gamma
  113.      channel size of greater than 8 bits.
  114.  
  115.   -  A few other gamma table changes were made. This is a good place to clarify the usage
  116.      of bias colors in DSpContext_FadeGamma.
  117.       *  If you don't pass in a bias color, then the smallest valid value is 0%, which
  118.          would be all black.  100% represents the normal gamma setting of the monitor.
  119.             *  If you pass in a bias color, then -100% represents black, 0% represents the bias
  120.          color and 100% represents the normal gamma settings of the monitor.  Other values
  121.          are interpolated based on these points.  For example, 50% would be half-way between
  122.          the bias color and the regular gamma of the monitor.
  123.       *  Values above 100% are permitted, but will peg to the maximum gamma settings. 
  124.     
  125.      -  Previous versions of DrawSprocket would call SetWRefCon on a CGrafPort.
  126.       
  127.      -  If you paused a page-flipping context, there was a 50/50 chance that you'd put
  128.      DrawSprocket into a state where it would lock up within two swaps after you unpaused
  129.      the context.  This has been corrected.
  130.       
  131.      -  When you pause and resume a context, the front page's visRgn was not being reset
  132.      properly. This meant that apps using QuickDraw would no longer be able to draw to the
  133.      menubar portion of the screen after the context was resumed.  This only affected
  134.      applications using page flipping or direct access to the front buffer.
  135.       
  136.   -  Under extremely low-memory conditions, it was possible for DrawSprocket to fail to
  137.      allocate a CGrafPort, and then pass a NULL pointer to CloseCPort, causing the machine
  138.      to die an agonizing death.  While applications should be checking for low memory
  139.      conditions (see Inside Mac: Memory), DrawSprocket will no longer call CloseCPort on
  140.               a NULL pointer.
  141.       
  142.   -  If you attempted to reserve a context with a pixel depth of less than 8 bits per pixel,
  143.      DrawSprocket would calculate rowBytes improperly.
  144.       
  145.  
  146. Changes:
  147.   -  The order in which DrawSprocket will pick resolutions has been modified. If DrawSprocket
  148.      has two contexts that both meet the required attributes, this is the order in which
  149.                  DrawSprocket prioritizes its selection:
  150.       
  151.      *  Choose the context with the smallest dimensions
  152.            *  Choose a context in the preferred depth over any other depth
  153.      *  Choose a context with the smallest depth
  154.      *  Always choose a safe context on the main monitor, or the current mode on the main
  155.         monitor, over a context on any other monitor.
  156.      *  Choose a context that is the current mode of a monitor over any other context.
  157.      *  Choose a safe mode for a monitor over any unsafe mode
  158.      *  If both contexts are safe, choose the one with the higher refresh rate
  159.      *  If only one of the contexts is on the main device, choose it
  160.  
  161.     Obviously, many things on this list don't apply if you can DSpUserSelectContext, which
  162.     of course, you *should* be doing.
  163.  
  164.     -  Additional error handling code was added it to catch errors returned by the Display
  165.        Manager.
  166.  
  167.     -  Additional debug asserts were added to catch application errors.  Please test your code.
  168.  
  169.  -  GoggleSprocket is no longer a supported product.  Starting with this version of
  170.     DrawSprocket, any attempt to find or reserve a stereo context will fail with an error.
  171.     
  172.  
  173. Known Issues:
  174.  
  175.   -  DrawSprocket does not pad rowBytes, or enforce it to be any particular multiple.  
  176.      However, its blitter functions expect rowBytes to be a multiple of 8 (PPC) or 16 (68K).
  177.      If you allocate an alt-buffer, be sure to choose your bounds appropriately.
  178.       
  179.   -  DrawSprocket can mess up the location of the Application Switcher in 8.5.
  180.     
  181.   -  If you are using a 7500/7600/8500/8600 machine, you must reset the gamma whenever you
  182.      activate or deactivate the context.  Doing a gamma fade is sufficient to do this.  If
  183.      you do not do this, the color tables aren't reset properly, and the screen will be a
  184.      flat grey.  In addition, pausing a page-flip context on one of those machines will
  185.      result in the screen being filled with garbage (VRAM is reorganized).
  186.  
  187.  
  188. Changes from 1.1.2 to 1.1.3
  189. ---------------------------
  190.  
  191. Bug Fixes:
  192.     
  193.   -  DSp 1.1.2 would crash when you called the 68K versions of the blit calls.
  194.   -  Removed the load delay when DSp is starting up.  Thanx to Kent Miller for that!
  195.         
  196. Changes:
  197.     
  198.   -  You can now call DSpUserSelectContext() on a single-monitor system when you are in
  199.      debug mode.  This is so that you can test your DSpUSC() code on a single monitor system.
  200.  
  201.  
  202. Changes from 1.1 to 1.1.2
  203. -------------------------
  204.  
  205. I just wanted to take a moment and mention the great assistance that was provided by
  206. Kirk Sumner of MacSoft and Chris Capener of Apple Computer for their assistance in
  207. this release of DrawSprocket.  Without them abusing the heck out of it I never would
  208. have found all the GetFrontBuffer and multiple monitor bugs that have been plaguing
  209. the last several release.  Gentlemen, my infinite thanx.
  210.  
  211.  
  212. Bug Fixes:
  213.  
  214.   -  there was a bug in SetCLUTEntries that would update the colors improperly
  215.      if you didn't start updating at color 0.
  216.           
  217.   -  removed an assert in the debug library that caused problems on some video
  218.      cards.
  219.  
  220.   -  there was a problem where if a context was placed on a display that did not
  221.      physically support the params, and if that display wasn't the main monitor
  222.      then QuickDraw calls wouldn't work on those buffers.  This is fixed.
  223.  
  224.   -  the new call DSpContext_GetFrontBuffer() had a bug where the CGrafPort
  225.      representation of the front-buffer was invalid if it wasn't on the main
  226.      monitor. You could write directly into the pixmap but you couldn't use
  227.      QuickDraw calls.  This is now fixed.
  228.  
  229.   -  The above fix brought out a bunch of other bugs related to multiple-monitor
  230.      usage. These are fixed as well.
  231.     
  232.   -  removed DebugStr()'s that were left in the non-debug build.
  233.         
  234.   -  A CGrafPtr was left dangling from OpenCPort(), causing crashes on some systems
  235.      (when used with OpenDoc, most noticeably).
  236.           
  237.   -  a page swap queued immediately before a context pause or inactivation would
  238.      still occur after the state change.  Now all pending swaps are completed before
  239.      the state change.
  240.           
  241.   -  requesting an alt buffer with rowbytes == width would not work correctly if the
  242.      width was smaller than the display width.
  243.          
  244.         -  fixed some null-pointer dereferences.
  245.         
  246.         -  the rightmost portion of the menu bar was not being re-added to
  247.            the gray region after a context deactivation, when the context resolution
  248.            was smaller than the desktop resolution.  The control strip sometimes went
  249.            under the menu bar on context deactivation because of this.
  250.         
  251.         -  duplicate buffer release when closing down a page flipped context.
  252.         
  253.         -  was not correctly disposing of alt buffers, causing duplicate
  254.            releases.
  255.  
  256.         -  fixed a bug where invalidating the entire underlay buffer only redrew the
  257.            back buffer's dirty rects instead of the entire buffer.
  258.         
  259.         -  there was an anomalous condition involved with setting a page count of 1 and
  260.            page-flipping active on machines that have page-flipping.  In essence, you'd
  261.            always be waiting for page 0 to become free and it never would.  If you have
  262.            the page-flipping bit turned on and the hardware supports it the page-count
  263.            will now always be set to a minimum of two.
  264.         
  265. Changes:
  266.  
  267.         -  DrawSprocket is now weak-linked against the Display Manager.  If DM is
  268.            not present DrawSprocket _will_ load but the call to DSpStartup() will fail
  269.            and return an error code.
  270.     
  271.         -  removed some timing code in the slot VBL task to improve
  272.            performance that was degraded in 1.1.
  273.           
  274.         -  Several changes to the user select context dialog.  You can now double-click
  275.            on the rect for a monitor to select it and continue.  You can now hit ESC, or
  276.            Command-period to cancel.  You can also hit tab or space to cycle through the
  277.            monitors.
  278.           
  279.         -  New call - DSpContext_GetFrontBuffer().  This gives you a CGrafPtr to access the
  280.            front buffer of your DSp context.  This was previously a private call.